package com.authine.cloudpivot.ext.domain.jizhong.common;

import java.util.Arrays;

/**
 * @author Peter
 * @version 1.0.0
 * @date 2021/4/1 15:25
 * @desc 冀中监听接口返回枚举
 */
public enum BsscListenerEnum {

    // 新订单消息 电商接到该类型的消息后，可根据订单号调用“查询订单详情”接口获取订单明细信息
    Order("2001"),
    // 取消订单消息 只有订单状态为待接单时，才可取消订单
    cancelOrder("2002"),
    // 确认收货消息 多次发货，会有多个确认收货消息。所有发货单确认收货后，订单完成。
    ConfirmReceipts("2003"),
    // 确认预购单消息 只有预购单才有该类型消息
    ConfirmPreOrder("2004"),
    // 申请售后消息 电商接到该类型的消息后，可根据售后单号调用“查询售后单详情”接口获取售后单明细信息
    ApplyForAfterSales("2101"),
    // 取消售后消息 只有售后单状态为待处理时，才可取消售后单
    CancelAfterSale("2102"),
    // 退货发运消息
    ReturnShipping("2103"),
    // 确认收货
    ConfirmReceipt("2104"),
    // 电商账户已生效 电商接到该类型的消息后，可以导入该账户的商品信息。
    EcommerceAccountHasTakenEffect("2201"),
    // 生成对账规则消息 billCycle（对账周期）：1表示按月、2表示按周billDay（出账时间）例：billCycle为1，billDay为10，表示每月10号出账单，即账单统计时间为上月10号00:00:00~本月的9号23:59:59 billCycle为2，billDay为7，表示每周日出账单，即账单统计时间为上周天00:00:00~本周六23:59:59
    GenerateReconciliationRules("2301"),
    // 采购确认账单
    PurchaseConfirmationBill("2302"),
    // 采购修改账单
    PurchaseModifiedBill("2303"),
    // 待开票订单消息
    PendingInvoicingOrder("2304"),
    // 开票申请消息
    InvoicingApplication("2401"),
    // 采购确认收票消息
    PurchaseConfirmationReceipt("2402"),
    // 退票申请消息
    RefundApplication("2403"),
    // 采购邮寄退票消息
    PurchaseMailRefund("2404");

    public String id;

    BsscListenerEnum(String id) {

        this.id = id;
    }

    public static BsscListenerEnum get(String id) {

        return Arrays.stream(BsscListenerEnum.values()).filter(v -> v.id.equals(id)).findFirst().orElse(null);
    }

    @Override
    public String toString() {

        return id;
    }

}
